home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
apps
/
671
/
doc
/
msh.doc
< prev
next >
Wrap
Text File
|
1992-09-20
|
11KB
|
307 lines
Okami Shell Version 1.5
Okami Microshell
Version 1.7
von Wolfram Rösler ... Public Domain
Zum Lieferumfang der Okami-Shell gehört eine Mini-Shell, deren Aufgabe
es ist, die Hauptshell aufzurufen. Die Notwendigkeit dazu ergibt sich
aus dem folgenden Dilemma:
Damit von der Shell aus GEM-Programme gestartet werden können,
muß die Shell vom Desktop aus als PRG gestartet werden.
Die Shell lädt die Datei profile nur dann, wenn ihr als
Parameter ein Minuszeichen übergeben wird (Login-Shell, wie in
Unix).
Beim Aufruf vom Desktop als PRG ist die Eingabe eines Parameters
nicht vorgesehen
Also kann man keine Login-Shell aufrufen, von der der Start von
GEM-Programmen möglich ist.
Zu diesem Zweck gibt es die Microshell, die, wenn sie als PRG aufgerufen
wird und dann ihrerseits die Okami-Shell aufruft, den Start von
GEM-Programmen ermöglicht.
Die Microshell erfüllt allerdings nicht nur diesen Zweck, sondern sie
ist ein Werkzeug zur Kontrolldatei-gesteuerten Ausführung mehrerer
Programme mit jeweiligen Parametern. Dazu wird eine Datei angelegt, in
der die Namen der aufzurufenden Programme und die zu übergebenden
Parameter angeführt sind. Das macht die Microshell tatsächlich zu einer
kleineren Version einer Shell, die zwar nicht interaktiv arbeitet, aber
trotzdem in der Lage ist, z.B. einen Compiler oder Linker aufzurufen und
das Ergebnis anschließend zu starten.
Die Microshell ist also ein vollwertiger Batch-Prozessor, der seine
eigenen Shellscripts hat und für die vielfältigsten Aufgaben eingesetzt
werden kann (natürlich auch vollkommen unabhängig von dem restlichen
Okami-System).
Die Batch- oder Kontrolldateien, die von der Microshell benutzt werden,
werden als MSH-Scripts bezeichnet.
Die Microshell befindet sich in der Datei msh.prg. Der Quellcode der
Microshell gehört zum Lieferumfang und befindet sich in der Datei msh.c.
AUFRUF DER MICROSHELL
Nach dem Start der Microshell als MSH.PRG wird als MSH-Script die Datei
msh.inf im aktuellen Directoy benutzt.
Wenn die Microshell als MSH.TTP oder von der Okami-Shell aus aufgerufen
wird, ist die Eingabe einer Kommandozeile möglich, die folgender Syntax
folgt:
{ Dateiname } [-c { Kommandos }]
Die angegebenen Dateien werden als MSH-Scripts ausgeführt. Wenn nach -c
Kommandos angegeben sind, werden diese direkt ausgeführt. Dies können
die Namen von zu startenden Programmen, aber auch interne Kommandos der
Microshell sein.
ACHTUNG: Jeder Parameter stellt dabei ein vollständiges Kommando dar.
Bei dem Aufruf
msh -c echo hallo
werden zwei Kommandos, nämlich "echo" und "hallo", übergeben. Um das
Kommando "echo hallo" ausführen zu lassen, muß der Aufruf so aussehen:
msh -c "echo hallo"
KOMMANDOS
Die einzelnen Zeilen eines Scripts haben folgende Bedeutung:
1) Führende und endende Whitespace-Zeichen (Leerzeichen, Tabs, Newlines
etc.) werden ignoriert.
2) Leerzeilen und Zeilen, die mit einem '#' (Doppelkreuz) beginnen,
gelten als Kommentarzeilen.
3) Alle Zeilen, die keine Kommentarzeilen sind, können als letztes
Zeichen einen Backslash (\) erhalten, dann wird die darauf folgende
Zeile an diese Zeile angehängt.
4) Wenn eine Zeile nur aus einem Pluszeichen besteht, wird der
Kommentarmodus eingeschaltet. Im Kommentarmodus wird der Name und die
Parameter jedes aufgerufenen Programmes auf dem Bildschirm ausgegeben.
(Gilt nicht für interne Kommandos.) Nach dem Start der Microshell ist
der Kommentarmodus eingeschaltet.
5) Wenn eine Zeile nur aus einem Minuszeichen besteht, wird der Kom-
mentarmodus abgeschaltet.
6) Allen anderen Zeilen werden in der Form
Kommando Parameter
interpretiert. Das Kommando ist dabei entweder der Name eines internen
Kommandos oder der Dateiname eines auszuführenden Programms.
Folgende interne Kommandos sind vorhanden:
cd
ändert das aktuelle Directory. `Parameter' darf ein Laufwerk
enthalten, z.B. "cd c:bin".
exit
das augenblickliche MSH-Script wird beendet.
echo
gibt den String `Parameter' auf dem Bildschirm aus. Der String
darf Steuersequenzen enthalten, siehe unten.
incl
führt die als Parameter angegebene Datei als MSH- Script aus.
Die maximale Schachtelungstiefe von incl-anweisungen ist nur
durch den verfügbaren Speicher und die Maximalanzahl
gleichzeitig offener Dateien begrenzt.
ver
gibt die Versionsnummer der Microshell und den
Kompilierungszeitpunkt aus.
exec
startet ein Programm anstelle des msh-Prozesses. Siehe unten.
wait
wartet auf Tastendruck oder Datum/Uhrzeit. Siehe unten.
Bei allen anderen Kommandos wird die als Kommando angegebene Datei
ausgeführt, wobei der als Parameter angegebene String als Kommandozeile
übergeben wird.
Es empfiehlt sich, den vollen Dateinamen anzugeben (was aber nicht immer
unbedingt notwendig ist.)
STEUERSEQUENZEN DES ECHO-KOMMANDOS
\n Newline
\t Tabulator
\b Backspace
\\ Backslash
\^ Zirkumflex
\c (am Stringende) verhindert Zeilenvorschub
^x erzeugt das Zeichen mit Ascii-Code x-'A'+1. Hierbei ist
x ein beliebiges Zeichen.
Beispiele:
echo Das ist eine Zeile \n und das ist die nächste.
echo Das ist eine Zeile \c
echo und das ist dieselbe.
echo Der folgende Text: ^[p ist invers durch eine \c
echo VT52-Steuersequenz. ^[q
echo Man kann Backslashes: \\ und Zirkumflexe: \^ ausgeben.
echo Ebenso kann man klingeln: ^G
DAS EXEC-KOMMANDO
Das interne Kommando exec wird folgendermaßen aufgerufen:
exec Programm {Parameter}
Das angegebene Programm wird mit den angegebenen Parametern gestartet,
anschließend wird die Microshell beendet. Wenn MiNT installiert ist,
wird das Programm anstelle des msh-Prozesses gestartet (d.h. der
msh-Prozeß wird von dem Programm überlagert), so daß die msh, während
das Programm läuft, keinen Speicherplatz belegt.
Das bedeutet, daß alles, was in einem msh-Script nach einem
exec-Kommando steht, nicht mehr beachtet werden kann.
DAS WAIT-KOMMANDO
Das interne Kommando wait kann auf zwei Arten aufgerufen werden.
wait key
In dieser Form wartet msh auf einen Tastendruck. Bei Druck auf ESC wird
das aktuelle Script beendet, bei jeder anderen Taste wird es
fortgesetzt.
wait ttmmjj HHMMSS [Text ]
In dieser Form wartet msh bis zu einem angegeben Datum und Uhrzeit.
Wenn anstelle von ttmmjj ein Stern (*) steht, wartet msh nur bis zu der
angegebenen Uhrzeit. Wenn der Protokollmodus aktiv ist, gibt msh
folgende Zeile aus:
Waiting for Text... press ESC to abort
Als Text steht hier der entsprechende Parameter von wait. Wenn kein
Text angegeben ist, entfällt die Ausgabe von "for Text".
Achtung: ttmmjj und HHMMSS müssen immer in dieser Form geschrieben
werden, d.h. durch genau ein Leerzeichen getrennt; alle Zahlen müssen
zweistellig angegeben sein. msh testet nicht auf Plausibilität; "wait
999999 999999" wartet endlos. (Ist halt eben eine "Micro"-Shell.)
Die Microshell macht keinen Gebrauch von evtl. definierten
Environment-Variablen, gibt diese aber an alle gestarteten Programme
unverändert weiter.
BEISPIELE
Beispiel 1: das MSH-Script zum Start der Okami-Shell
# Microshell Kontrolldatei für Okami-Shell
-
echo Aufruf der Okami-Shell
exec sh.ttp -
Es wird die Okami-Shell als Login-Shell (mit dem Parameter "-")
aufgerufen. Vor dem Aufruf der Shell wird die Meldung "Aufruf der
Okami-Shell" auf den Bildschirm geschrieben.
Wenn MiNT installiert ist, wird die Microshell von sh.ttp überlagert.
Beispiel 2: ein komplizierteres Script
# Demo-Script für die Microshell
-
ver
echo Das ist ein MSH-Script
echo Aufruf des Compilers
d:\compiler\cc.ttp e:\source\test1.c e:\source\test2.c \
e:source\test3.c -o e:\bin\test.tos
# Ausführen eines anderen Scripts
incl e:\bin\mshdemo.msh
# Aufruf der Okami-Shell
echo Plattenbelegung von Laufwerk E:
e:\bin\sh.ttp df E: ; echo ENTER: ; read
Neben Kommentaren und Ausgabeanweisungen (echo) wird der Compiler (in
der Datei d:\compiler\cc.ttp) mit einer über zwei Zeilen gehenden
Parameterliste aufgerufen. Danach wird eine weiteres Script
(e:\bin\mshdemo.msh) ausgeführt und durch Aufruf der Okami-Shell die
Belegung von Partition E: ausgegeben und auf einen Tastendruck gewar-
tet.
Beispiel 3: Starten eines Mailbox-Poll-Programms zu einer bestimmten
Zeit
wait * 023000 Poll time
c:\bin\poll.ttp
d:\okami\sh.ttp shutdown -rf
Dieses MSH-Script wartet bis 2.30 Uhr und startet dann das Programm
c:\bin\poll.ttp . Danach ruft es die Okami-Shell auf, um einen Reset
durchzuführen. Das MSH-Script sollte also so installiert werden, daß es
nach dem Systemstart sofort ausgeführt wird. Während der Wartezeit
erscheint die Meldung "Waiting for Poll time... press ESC to abort".
Wenn der Anwender währenddessen die ESC-Taste drückt, wird das Script
abgebrochen.
DIE MICROSHELL IM AUTOORDNER
Die Microshell kann auch anstelle des Auto-Ordners benutzt werden. Dazu
kopiert man sich alle Programme, die beim Systemstart geladen werden
sollen, in einen eigenen Ordner, z.B. in den Ordner c:startup. In den
eigentlichen Auto-Ordner kopiert man nur die Datei msh.prg. Unter dem
Namen c:\msh.inf wird eine Datei angelegt, die die Namen der zu
startenden Programme in der gewünschten Reihenfolge enthält. (Im
einfachsten Fall erzeugt man diese Datei von der Okami-Shell aus mit dem
Kommando:
ls -nk c:\startup\*.prg >c:\msh.inf
Dann ist die Wirkung dieselbe wie beim Aufruf aus dem Auto-Ordner.)
Außerdem kann die inf-Datei Kommentare und echo-Zeilen erhalten.
Natürlich ist von der Microshell aus auch der Aufruf von Programmen aus
beliebigen anderen Ordnern möglich.
WICHTIG: die Datei msh.inf muß bei dieser Verwendung im
Wurzelverzeichnis von C: liegen und nicht im Auto-Ordner, da beim
Systemstart das Wurzelverzeichnis das aktuelle Directory ist, auch bei
der Ausführung der Programme im Auto-Ordner.